package la.iok.hzsvn.lewin.movie.core.exception;

import la.iok.hzsvn.share.protocol.exception.ErrorCodeException;
import la.iok.hzsvn.share.response.ListDataResponse;
import la.iok.hzsvn.share.response.OperatorResponse;
import la.iok.hzsvn.share.response.SingleDataResponse;

public class OperatorResponseParser {
    /**
     * 解析响应的数据。如果响应内容是失败
     * @param or 响应结果
     * @param <T> 响应数据类型
     * @return 响应的数据
     */
    public static  <T> T parseResponse(OperatorResponse or){
        if(or == null){
            return null;
        }
        if(!or.success()){
            throw new ErrorCodeException(or.getCode(),null,or.getMessage());
        }
        if(or instanceof SingleDataResponse){
            return (T) ((SingleDataResponse<?>) or).getData();
        }else if(or instanceof ListDataResponse){
            return (T) ((ListDataResponse<?>) or).getData();
        }
        return null;
    }
}
